import { defineStore } from 'pinia'
import { login, getMerchantInfo } from '@/api/merchant'
import { ElMessage } from 'element-plus'
import router from '@/router'

export const useMerchantStore = defineStore('merchant', {
  state: () => ({
    token: localStorage.getItem('token') || '',
    merchantInfo: {},
    isLogin: !!localStorage.getItem('token')
  }),

  actions: {
    // 商家登录
    async login(merchantInfo: { username: string; password: string }) {
      try {
        const response = await login(merchantInfo)
        if (response.code === 200) {
          const { token } = response.data
          localStorage.setItem('token', token)
          this.token = token
          this.isLogin = true

          // 获取商家信息
          await this.getMerchantInfo()

          ElMessage.success('登录成功')
          // 使用 await 确保路由跳转完成
          await router.push('/merchant/products')
          console.log('路由跳转完成: /merchant/products')
          return true
        }
        // 不在这里处理错误消息，由响应拦截器统一处理
        return false
      } catch (error) {
        console.error('登录失败:', error)
        // 不在这里处理错误消息，由响应拦截器统一处理
        return false
      }
    },

    // 获取商家信息
    async getMerchantInfo() {
      try {
        console.log('开始获取商家信息')
        const response = await getMerchantInfo()
        console.log('获取商家信息响应:', response)

        if (response.code === 200) {
          this.merchantInfo = response.data
          console.log('商家信息:', this.merchantInfo)
          return response.data
        } else {
          console.error('获取商家信息失败，响应码:', response.code)
          return null
        }
      } catch (error) {
        console.error('获取商家信息失败:', error)
        return null
      }
    },

    // 退出登录
    logout() {
      localStorage.removeItem('token')
      // 不删除保存的商家用户名，以便下次登录时自动填充
      this.token = ''
      this.merchantInfo = {}
      this.isLogin = false
      router.push('/login')
      ElMessage.success('退出登录成功')
    }
  }
})
